﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lesson_6_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i;
            do
            {
                Console.WriteLine("Меню:");
                Console.WriteLine("1) Выберите задание 1");
                Console.WriteLine("2) Выберите задание 2");
                Console.WriteLine("3) Выберите задание 3");
                Console.WriteLine("4) Выберите задание 4");
                Console.WriteLine("5) Выберите задание 5");
                Console.WriteLine("6) Выберите задание 6");
                Console.WriteLine("7) Выберите задание 7");
                Console.WriteLine("8) Выйти из программы");
                //Console.WriteLine("9) Выйти из программы");
                Console.WriteLine("Ваше решение");

                i = Convert.ToInt32(Console.ReadLine());
                switch (i)
                {
                    case 1:
                        PositiveAndNegative();
                        break;
                    case 2:
                        TwoNumberMultiplyFive();
                        break;
                    case 3:
                        CountNum();
                        break;
                    case 4:
                        Sqrt();
                        break;
                    case 5:
                        MaxOfFive();
                        break;
                    case 6:
                        ThreePercentBanking();
                        break;
                    case 7:
                        Integers();
                        break;
                    case 8:
                        Console.WriteLine("Программа будет закрыта");
                        break;
                    default:
                        Console.WriteLine("Неверный ввод");
                        break;
                }
                Console.Write("\n\nНажмите любую клавишу");
                Console.ReadKey();
                Console.Clear();
            }
            while (i != 8);

        }
        static void PositiveAndNegative()
        //1) С клавиатуры вводятся n чисел.Составьте программу, которая определяет кол-во отрицательных,
        //кол-во положительных и кол-во нулей среди введеных чисел.Значение n вводится с клавиатуры.
        {
            int positiveCount = 0;
            int negativeCount = 0;
            int zeroCount = 0;
            Console.WriteLine("Введите кол - во чисел");
            int numberCount = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите числа");
            while (numberCount > 0) //пока кол-во чисел больше 0
            {
                int number = Convert.ToInt32(Console.ReadLine()); //вводим числа
                if (number == 0)
                {
                    zeroCount++; // считаем 0
                }
                else if (number < 0) // считаем отрицательные
                {
                    negativeCount++;
                }
                else // считаем положительные - остальные
                {
                    positiveCount++;
                }
                numberCount--; // уменьшаем кол-во введёных чисел на 1 после определения типа( + 0 - )
            }
            Console.WriteLine("Положительных: {0}, Отрицательных: {1}, Нулей: {2}", positiveCount, negativeCount, zeroCount);

        }
        static void TwoNumberMultiplyFive() //2) Вывести все двухзначные числа, кратные 5
        {
            for (int n = -99; n <= 99; n++)
            {
                if (n > -10 && n < 10) ;
                else if (n % 5 == 0)
                    Console.WriteLine(n);
            }
        }

        static void CountNum()
        //3) Пользователь вводит число. 
        //3.1) Определить количество цифр в числе
        //3.2) Найти минимальную и максимальную цифру числа
        {
            Console.WriteLine("Enter number");
            int number = Convert.ToInt32(Console.ReadLine());
            int count = 1;
            int max = 0;
            int min = 9;
            int mid = 0;
            while (number / 10 > 0)
            {
                mid = number % 10;
                if (max < mid)
                    max = mid;
                if (mid < min)
                    min = mid;
                number /= 10;
                count++;
            }
            if (max < number)
                max = number;
            if (number < min)
                min = number;
            Console.WriteLine(count);
            Console.WriteLine(max);
            Console.WriteLine(min);
        }

        static void Sqrt() //4) вывод на экран квадраты чисел от 10 до 20
        {
            for (int n = 10; n <= 20; n++)
            {
                Console.WriteLine("Квадрат числа {0} равен {1}", n, n * n);
            }
        }

        static void MaxOfFive() //5) Пользователь вводит 5 чисел. Найти max из введенных чисел
        {
            int max = Int32.MinValue;
            bool isFirstIteration = true;
            Console.WriteLine("Введите 5 чисел");
            int numberCount = 5;
            while (numberCount > 0)
            {
                int number = Convert.ToInt32(Console.ReadLine());
                if (isFirstIteration)
                {
                    max = number;
                    isFirstIteration = false;
                }
                else
                {
                    if (number > max)
                    {
                        max = number;
                        isFirstIteration = true;
                    }
                }
                numberCount--;
            }
            Console.WriteLine("Максимальное число {0}", max);
        }

        static void ThreePercentBanking() //В банк на 3% вклад положили S гривен. Какой станет сумма вклада через N лет.
        {
            Console.WriteLine("Сумма вклада:");
            double depositAmount = Convert.ToDouble(Console.ReadLine()); //Ввод суммы вклада
            Console.WriteLine("Срок вклада:");
            int depositPeriod = Convert.ToInt32(Console.ReadLine()); // ввод срока вклада
            for (int n = depositPeriod; n > 0; n--)
            {
                depositAmount = (depositAmount * 1.03);
            }
            Console.WriteLine("После {0} лет сумма вклада составит {1}", depositPeriod, depositAmount);
        }

        static void Integers() //Даны натуральные числа от 20 до 50. Напечатать те из них, которые делятся на 3, но не делятся на 5.
        {
            for (int n = 20; n <= 50; n++)
                if ((n % 3 == 0) && (n % 5 != 0))
            Console.WriteLine(n);
        }


    }
}
